import javax.management.MBeanAttributeInfo;
import java.util.Scanner;

public class reviewC {
    public static void main(String[] args) {  //求二进制中1的个数
        int n,sum=0;
        Scanner p=new Scanner(System.in);
        n=p.nextInt();
        while(n!=0)
        {
            if((n&1)==1)
                sum++;
            n>>=1;
        }
        System.out.println(sum);
    }

    public static void main6(String[] args) {  //求两个数的最大公约数
        int a,b;
        Scanner p=new Scanner(System.in);
        a=p.nextInt();
        b=p.nextInt();
        int ret=gcd(a,b);
        System.out.println(ret);
    }

    public static int gcd(int a,int b) {
        int c=0;
        while(a%b!=0)
        {
            c=a%b;
            a=b;
            b=c;
        }
        return c;
    }
    public static void main5(String[] args) {  //分数求和
        int flg=1,i;
        double sum=0;
        for(i=1;i<=100;i++)
        {
            sum=sum+flg*1.0/i;
            flg=-flg;
        }
        System.out.println(sum);
    }

    public static void main4(String[] args) {   //水仙花数（出现的问题，需要学习立方的表示方法）
        int n;
        Scanner p=new Scanner(System.in);
        while(p.hasNextInt())
        {
            n=p.nextInt();
            lilyNumber(n);
        }
    }

    public static void lilyNumber(int n){
        for(int i=0;i<=n;i++)
        {
            int j=i,sum=0,count=0;
            while(j!=0)
            {
                count++;
                int k=(j%10)*(j%10)*(j%10);
                sum=sum+k;
                j/=10;
            }
            if(sum==i&&count==3)
            {
                System.out.println(i);
            }
        }

    }

    public static void main3(String[] args) {    //打印X图形
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n=in.nextInt();
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<n;j++)
                {
                    if(i==j||i+j==n-1)   System.out.print("*");
                    else System.out.print(" ");
                }
                System.out.println();
            }
        }
    }

    public static void main2(String[] args) {   //判断闰年
        int n;
        Scanner p=new Scanner(System.in);
        while(p.hasNextInt()) {
            n=p.nextInt();
            //n=p.nextInt();
            boolean ret = isLeapYear(n);
            if (ret == true)
                System.out.println("是闰年");
            else
                System.out.println("不是闰年");
        }
    }

    public static boolean isLeapYear(int n){  //判断闰年
        if(n%400==0||n%4==0&&n%100!=0)
            return true;
        return false;
    }

    public static void main1(String[] args) {  //数字9的个数（两种理解方式）
        all();
        show();
    }

    public static int all(){  //9的总个数
        int i,sum=0;
        for( i=1;i<=100;i++){
            int j=i;
            while(j!=0){
                if(j%10==9)
                {sum++;}
                j/=10;
            }
        }
        System.out.println(sum);
        return sum;
    }

    public static int show(){  //出现9的数字个数
        int i,sum=0;
        for( i=1;i<=100;i++){
            int j=i;
            while(j!=0){
                if(j%10==9)
                {sum++;break;}
                j/=10;
            }
        }
        System.out.println(sum);
        return sum;
    }
}
